সি++ এ ফাংশনে পয়েন্টার পাস করা একটি গুরুত্বপূর্ণ প্রোগ্রামিং কৌশল, যা ফাংশনে ভেরিয়েবলের ঠিকানা পাঠিয়ে সেই ভেরিয়েবলের মান পরিবর্তন করতে সহায়ক। পয়েন্টার ব্যবহার করে ডেটা পাস করলে মেমোরির স্থানটি সরাসরি অ্যাক্সেস করা সম্ভব হয় এবং এর মাধ্যমে কার্যকর মেমোরি ব্যবস্থাপনা এবং ডেটার সরাসরি পরিবর্তন করা যায়।
নিচে একটি উদাহরণ দেওয়া হলো, যেখানে একটি ফাংশনে পয়েন্টার পাস করে মূল ভেরিয়েবলের মান পরিবর্তন করা হচ্ছে।
#include <iostream>
using namespace std;
void changeValue(int* ptr) {
*ptr = 20; // পয়েন্টারের মাধ্যমে মূল ভেরিয়েবলের মান পরিবর্তন
}
int main() {
int num = 10;
cout << "Before: " << num << endl; // Output: Before: 10
changeValue(&num); // ফাংশনে পয়েন্টার পাস করা
cout << "After: " << num << endl; // Output: After: 20
return 0;
}
ব্যাখ্যা:
changeValue
ফাংশনটি একটি int
টাইপের পয়েন্টার ptr
গ্রহণ করে।*ptr = 20;
লাইনটি ptr
পয়েন্টারের মাধ্যমে মূল ভেরিয়েবলের মানকে পরিবর্তন করে, যা num
এর মান পরিবর্তন করে।main
ফাংশনে changeValue(&num);
কল করার মাধ্যমে num
এর ঠিকানা ptr
পয়েন্টারে পাস করা হয়, এবং এর ফলে মূল ভেরিয়েবলের মান পরিবর্তিত হয়।পয়েন্টার পাস করে দুটি ভেরিয়েবলের মান অদল-বদল করতে পারা যায়। নিচের উদাহরণে একটি ফাংশনে দুটি পয়েন্টার পাস করে তাদের মান অদল-বদল করা হচ্ছে।
#include <iostream>
using namespace std;
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 5, y = 10;
cout << "Before swap: x = " << x << ", y = " << y << endl;
swap(&x, &y); // ফাংশনে দুটি পয়েন্টার পাস করা
cout << "After swap: x = " << x << ", y = " << y << endl;
return 0;
}
ব্যাখ্যা:
swap
ফাংশন দুটি int
টাইপের পয়েন্টার a
এবং b
গ্রহণ করে।*a
এবং *b
এর মান অদল-বদল করা হয়।main
ফাংশনে swap(&x, &y);
কল করার মাধ্যমে x
এবং y
এর ঠিকানা a
এবং b
পয়েন্টারে পাস করা হয়।NULL
কি না তা যাচাই করা উচিত, না হলে এটি অপ্রত্যাশিত ফলাফল বা ক্র্যাশের কারণ হতে পারে।dangling pointer
সমস্যা হতে পারে।Null Pointer চেক করার উদাহরণ:
void display(int* ptr) {
if (ptr != NULL) {
cout << "Value: " << *ptr << endl;
} else {
cout << "Pointer is NULL" << endl;
}
}
সি++ এ ফাংশনে পয়েন্টার পাস করার মাধ্যমে সরাসরি মেমোরি অ্যাক্সেস করা এবং মূল ভেরিয়েবলের মান পরিবর্তন করা যায়। এটি মেমোরি ব্যবস্থাপনা, দ্রুত কার্যক্রম, এবং বড় ডেটা ব্যবহারের ক্ষেত্রে কার্যকর। তবে পয়েন্টার ব্যবহারে সতর্ক থাকা উচিত, কারণ এটি প্রোগ্রামে জটিলতা ও ত্রুটির সম্ভাবনা বাড়াতে পারে।
common.read_more